package com.spider.util;

import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

public class ReflectUtil {

    /**
     *将一个对象转化成 Map<String,Object> key是字段名 name为对应的值
     *
     */
    public static Map<String,Object> getFieldValue(Object obj){
        Map<String,Object> fieldValue = new HashMap<>();

        try {
            BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass(), Object.class);

            PropertyDescriptor[] propertyDescriptors =  beanInfo.getPropertyDescriptors();

            Arrays.stream(propertyDescriptors).forEach(k->{
                try {
                    k.getReadMethod().setAccessible(true);
                    Object value = k.getReadMethod().invoke(obj, null);
                    fieldValue.put(k.getName(),value);
                }catch (Exception e){
                    e.printStackTrace();
                }
            });

        }catch (Exception e ){
            e.printStackTrace();
        }
        return fieldValue;
    }

//    public static void main(String[] args) {
//        Position position = new Position();
//        position.setId(1);
//        position.setName("di");
//        position.setCategory("A轮");
//
//        System.out.println(getFieldValue(position));
//    }

}
